﻿using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Devonline.Core;

namespace Devonline.Entity
{
	/// <summary>
	/// 附加信息, 子类中和对应的实体数据建立主子表关系以保存附加信息, 字符串类型的抽象实现
	/// 需要在具体业务子类中实现并指定 AdditionalId 对应的业务实体类型导航引用
	/// </summary>
	[Table("additional"), DisplayName("附加信息")]
    public abstract class Additional : Additional<string>
    {
    }

    /// <summary>
    /// 附加信息, 子类中和对应的实体数据建立主子表关系以保存附加信息
    /// 需要在具体业务子类中实现并指定 AdditionalId 对应的业务实体类型导航引用
    /// </summary>
    [Table("additional"), DisplayName("附加信息")]
    public abstract class Additional<TKey> : EntitySetWithKeyValuePair<TKey>, IAdditional<TKey> where TKey : IConvertible
    {
        [Column("additional_id"), DisplayName("附加信息业务主键"), Required, MaxLength(36), Excel]
        public virtual TKey AdditionalId { get; set; }
    }
}
